package br.com.dallasmotopecas.seguranca.auditoria.controller;

import java.sql.Connection;
import java.util.List;

import javax.faces.context.ExternalContext;

import br.com.dallasmotopecas.seguranca.auditoria.model.AuditoriaModel;
import br.com.dallasmotopecas.seguranca.auditoria.vo.AuditoriaVo;
import br.com.dallasmotopecas.util.controller.AbstractController;
import br.com.dallasmotopecas.util.exception.ClasseNaoEncontradaException;
import br.com.dallasmotopecas.util.exception.ConexaoException;
import br.com.dallasmotopecas.util.exception.InserirObjetoException;
import br.com.dallasmotopecas.util.exception.ListarObjetoException;

public class AuditoriaController extends AbstractController
{
	public AuditoriaController(Connection connection) throws ConexaoException
	{
		super(connection);
	}

	public AuditoriaController(ExternalContext externalContext) throws ClasseNaoEncontradaException, ConexaoException
	{
		super(externalContext);
	}
	
	public void inserirAuditoria(final AuditoriaVo auditoriaVo) throws InserirObjetoException
	{
		AuditoriaModel auditoriaModel = null;
		try
		{
			if (auditoriaVo != null)
			{
				auditoriaModel = new AuditoriaModel(getConnection());
				
				beginTransaction();
				
				auditoriaModel.inserirAuditoria(auditoriaVo);
				
				commit();
			}
		}
		catch(InserirObjetoException e)
		{
			rollback();
			throw e;
		}
		finally
		{
			if (auditoriaModel != null)
				auditoriaModel = null;
		}
	}
	
	public void processarListaAuditoria(List<AuditoriaVo> lista) throws ListarObjetoException
	{
		AuditoriaModel auditoriaModel = null;
		try
		{
			if (lista != null)
			{
				if (!lista.isEmpty())
					lista.clear();
				
				auditoriaModel = new AuditoriaModel(getConnection());
				
				lista.addAll(auditoriaModel.getListaAuditoria());
			}
		}
		catch(ListarObjetoException e)
		{
			throw e;
		}
		finally
		{
			if (auditoriaModel != null)
				auditoriaModel = null;
		}
	}

}
